<?php
require_once('IRepositorioForum.php');
require_once($_SERVER["DOCUMENT_ROOT"] . '/Esquina_da_TI/ClassesBasicas/Post.php');
require_once($_SERVER["DOCUMENT_ROOT"] . '/Esquina_da_TI/ClassesBasicas/Topico.php');
/* 
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of RepositorioForum
 *
 * @author Paulo
 */
class RepositorioForum implements IRepositorioForum {

    private $conexao = null;


    function __construct() {
        $this->conexao = new Conexao();
    }

    public function listarForuns() {
        $listaDeForuns = array();

        $this->conexao->abrirConexao();

        $query = "select titulo from Forum order by titulo Asc";

        $result = mysql_query($query);

        while($row = mysql_fetch_array($result)) {
            $titForum = $row['titulo'];

            // verificando a quantidade de assunto do forum selecionado
            $query2 = "select count(nome) as qtdAssunto from assunto inner join forum on assunto.codForum = forum.codForum where forum.titulo='".$titForum."'";
            $result2 = mysql_query($query2);
            $row2 = mysql_fetch_array($result2);
            $assuntos = $row2['qtdAssunto'];

            //verificando a quantidade de topicos referente ao forum selecionado
            $query3 = "SELECT count(topico.titulo) as qtdTopico from topico inner join assunto on topico.assunto = assunto.codAssunto
                                                            inner join forum on assunto.codForum = forum.codForum where forum.titulo='".$titForum."'";
            $result3 = mysql_query($query3);
            $row3 = mysql_fetch_array($result3);
            $topicos = $row3['qtdTopico'];

            //verificando qual foi o ultimo topico criado do forum selecionado
            $query4 = "SELECT max(codTopico), topico.titulo from topico inner join assunto on topico.assunto = assunto.codAssunto
                                                            inner join forum on assunto.codForum = forum.codForum where forum.titulo='".$titForum."'";
            $result4 = mysql_query($query4);
            $row4 = mysql_fetch_array($result4);
            $ultimoTopico = $row4['titulo'];

            //criando um vetor temporario para adicionar o linha referente ao forum selecionado
            $tempVector = array('titulo'=>$titForum,'assuntos'=>$assuntos,'topicos'=>$topicos,'ultimoTopico'=>$ultimoTopico);

            //adicionando o os dados do forum selecionado ao array definitivo.
            array_push($listaDeForuns, $tempVector);
        }

        return $listaDeForuns;
    }



    public function listarAssuntos($forum) {
        $listaDeAssuntos = array();

        $this->conexao->abrirConexao();

        $query = "select nome from assunto inner join forum on
                  assunto.codForum = forum.codForum where forum.titulo = '". $forum ."' Order by assunto.nome asc";

        $result = mysql_query($query);
        while($row = mysql_fetch_array($result)) {
            $titAssunto = $row['nome'];

            // verificando a quantidade de topicos do assunto selecionado
            $query2 = "select count(Topico.titulo) as qtdTopicos from Topico inner join Assunto on Topico.assunto = Assunto.codAssunto where assunto.nome='".$titAssunto."'";
            $result2 = mysql_query($query2);
            $row2 = mysql_fetch_array($result2);
            $topicos = $row2['qtdTopicos'];


            //verificando a quantidade de posts referente ao assunto selecionado
            $query3 = "SELECT count(Post.codPost) as qtdPosts from Post inner join Topico on Post.topico = Topico.codTopico
                        inner join Assunto on topico.assunto = Assunto.codassunto where Assunto.nome='". $titAssunto ."'";
            $result3 = mysql_query($query3);
            $row3 = mysql_fetch_array($result3);
            $posts = $row3['qtdPosts'];

            //verificando quando foi criado o ultimo post do assunto selecionado
            $query4 = "SELECT max(codPost), Post.data, Usuario.nome from Post inner join topico on post.topico = topico.codTopico
                          inner join Assunto on topico.assunto = assunto.codAssunto inner join Usuario on post.usuario = usuario.codUsuario
                          where assunto.nome='". $titAssunto ."'";
            $result4 = mysql_query($query4);
            $row4 = mysql_fetch_array($result4);
            $ultimoPost = $row4['data']."<br/>". $row4['nome'];

            //criando um vetor temporario para adicionar o linha referente ao forum selecionado
            $tempVector = array('assunto'=>$titAssunto,'topicos'=>$topicos,'posts'=>$posts,'ultimoPost'=>$ultimoPost);

            //adicionando o os dados do forum selecionado ao array definitivo.
            array_push($listaDeAssuntos, $tempVector);
        }

        return $listaDeAssuntos;
    }



    public function listarTopicos($assunto) {
        $listaDeTopicos = array();

        $this->conexao->abrirConexao();

        $query = "select titulo from topico inner join assunto on
                                  topico.assunto = assunto.codAssunto where assunto.nome = '". $assunto ."' Order by topico.data asc";
        $result = mysql_query($query);

        while($row = mysql_fetch_array($result)) {
            $titTopico = $row['titulo'];


            // verificando a quantidade de respostas do topico selecionado.
            $query2 = "select count(Post.codPost) as respostas from Post inner join Topico on Post.topico = Topico.codTopico where topico.titulo='".$titTopico."'";
            $result2 = mysql_query($query2);
            $row2 = mysql_fetch_array($result2);
            $respostas = $row2['respostas'];

            //verificando o autor do topico selecionado.
            $query3 = "Select Usuario.nome from usuario inner join topico on topico.usuario = usuario.codUsuario where topico.titulo = '".$titTopico."'";
            $result3 = mysql_query($query3);
            $row3 = mysql_fetch_array($result3);
            $autor = $row3['nome'];

            //verificando quando foi feito o ultimo post.
            $query4 = "select max(Post.data) data, Usuario.nome from post inner join topico on
                                                      post.topico = topico.codtopico inner join usuario on post.usuario = usuario.codUsuario where topico.titulo = '". $titTopico ."'";
            $result4 = mysql_query($query4);
            $row4 = mysql_fetch_array($result4);
            $ultimoPost = $row4['data']."<br/>". $row4['nome'];

            //criando um vetor temporario para adicionar o linha referente ao forum selecionado
            $tempVector = array('topico'=>$titTopico,'respostas'=>$respostas,'autor'=>$autor,'ultimoPost'=>$ultimoPost);

            //adicionando o os dados do forum selecionado ao array definitivo.
            array_push($listaDeTopicos, $tempVector);
        }

        return $listaDeTopicos;
    }

    public function exibirTopico($topico) {
        $this->conexao->abrirConexao();

        $query = "select codTopico, data, titulo, Usuario.login, texto, assunto from topico inner join usuario on usuario.codUsuario = topico.usuario where topico.titulo = '". $topico ."'";

        $result = mysql_query($query);

        $row = mysql_fetch_array($result);

        $codigo = $row['codTopico'];
        $data = $row['data'];
        $titulo = $row['titulo'];
        $login = $row['login'];
        $texto = $row['texto'];
        $assunto = $row['assunto'];

        $topicoLocalizado = new Topico();

        $topicoLocalizado->setCodTopico($codigo);
        $topicoLocalizado->setData($data);
        $topicoLocalizado->setTitulo($titulo);
        $topicoLocalizado->setTexto($texto);
        $topicoLocalizado->setUsuario($login);
        $topicoLocalizado->setAssunto($assunto);
        
        return $topicoLocalizado;
    }


    public function listarRespostas($topico) {
        $listaDeRespostas = array();

        $this->conexao->abrirConexao();

        $query = "select Post.data, Post.texto, Usuario.login from post inner join topico on post.topico = topico.codTopico inner join usuario on post.usuario = Usuario.codUsuario where topico.titulo = '". $topico ."'";

        $result = $this->conexao->executarQuery($query);

        while($row = mysql_fetch_array($result)) {
            $data = $row['data'];
            $titulo = $topico;
            $login = $row['login'];
            $texto = $row['texto'];

            $tempVector = array('data'=>$data,'titulo'=>$titulo,'login'=>$login,'texto'=>$texto);

            array_push($listaDeRespostas, $tempVector);
        }

        return $listaDeRespostas;
    }

    public function cadastrarPost($novoPost) {

        $this->conexao->abrirConexao();

        $query = "INSERT INTO Post(data,texto, usuario, topico) VALUES('".$novoPost->getDataPost()."', '".$novoPost->getTexto().
            "', '".$novoPost->getCodUsuario()."','". $novoPost->getCodTopico()."');";

        if($this->conexao->executarQuery($query)) {
            return true;
        }else {
            return false;
        }

    }


    public function recuperarCodigoAssunto($assunto) {
        $codigo = -1;
        $this->conexao->abrirConexao();

        $query = "SELECT assunto.codAssunto FROM assunto WHERE assunto.nome ='". $assunto ."'";

        $result = $this->conexao->executarQuery($query);



        while($row = mysql_fetch_array($result)) {
            $codigo = $row['codAssunto'];
        }

        return $codigo;
    }

    public function verificarExistenciaAssunto($assunto){      
        $this->conexao->abrirConexao();

        $query = "SELECT * FROM assunto WHERE assunto.nome ='" .$assunto."'";

        $result = $this->conexao->executarQuery($query);

         //   die($this->conexao->executarQuery($query));

        if(mysql_num_rows($result) == 0){
            return false;
        }else{
            return true;
        }
    }

    public function cadastrarAssunto($assunto, $forum){
        $this->conexao->abrirConexao();

        $query = "SELECT Forum.codForum FROM Forum WHERE Forum.titulo = '".$forum."'";
        $result = mysql_query($query);
        $row = mysql_fetch_array($result);
        $codForum = $row['codForum'];           

        $query = "INSERT INTO Assunto(nome,codForum) VALUES('".$assunto."',".$codForum.")";

        $result = mysql_query($query);

        if($result){
            return true;
        }else{
            return false;
        }        
    }

    public function cadastrarTopico($novoTopico) {
        $this->conexao->abrirConexao();

        $query = "INSERT INTO Topico(titulo,data,texto,usuario,assunto) VALUES('".$novoTopico->getTitulo()."','".$novoTopico->getData().
            "','".$novoTopico->getTexto()."','".$novoTopico->getUsuario()."','".$novoTopico->getAssunto()."')";

        if($this->conexao->executarQuery($query)) {
            return true;
        }else {
            return false;
        }

        $this->conexao->fecharConexao();
    }

    public function topicosRecentes(){
        $topicos = array();
        $this->conexao->abrirConexao();
        $anoAtualMesAtual = date('Y-m');
        $anoAtualMesPassado = date('Y') . '-' . (date('m') - 1);
        $query = "SELECT forum.titulo as 'forum', assunto.nome as 'assunto', topico.titulo as 'topico'
                    FROM topico
                    INNER JOIN assunto ON topico.assunto = assunto.codAssunto
                    INNER JOIN forum ON assunto.codForum = forum.codForum
                    WHERE topico.data LIKE '".$anoAtualMesAtual."%' OR '".$anoAtualMesPassado."%'";

        $result = mysql_query($query);

        while($row = mysql_fetch_array($result)){
            $f = $row['forum'];
            $a = $row['assunto'];
            $t = $row['topico'];

            $tempVector = array('forum'=>$f,'assunto'=>$a,'topico'=>$t);

            array_push($topicos, $tempVector);
        }

        $this->conexao->fecharConexao();
       
        return $topicos;
    }



}

?>
